Obsidian: GPU Programming in Haskell
نویسندگان
چکیده
Obsidian is a language for data-parallel programming embedded in Haskell. As the Obsidian programs are run, C code is generated. This C code can be compiled for an NVIDIA 8800 series GPU (Graphics Processing Unit), or for other high-end NVIDIA GPUs. The idea is that the style of programming used in Lava for structural hardware design [2] can be applied to data-parallel programming as well. Therefore Obsidian programmers use combinators that have much in common with those used in Lava. However, where Lava generates the netlist for a fixed-size circuit, Obsidian can generate GPU programs that are parametric in input size.
منابع مشابه
Obsidian: A Domain Specific Embedded Language for Parallel Programming of Graphics Processors
We present a domain specific language, embedded in Haskell, for general purpose parallel programming on GPUs. Our intention is to explore the use of connection patterns in parallel programming. We briefly present our earlier work on hardware generation, and outline the current state of GPU architectures and programming models. Finally, we present the current status of the Obsidian project, whic...
متن کاملEmbedded Languages for Data-Parallel Programming
Computers today are becoming more and more parallel. General purpose processors (CPUs) have multiple processing cores and Single Instruction Multiple Data (SIMD) units for data-parallelism. Graphics processors (GPUs) bring massive parallelism at the cost of being harder to program than CPUs. This thesis applies embedded language methodology to data-parallel programming. Two embedded languages a...
متن کاملGPGPU Kernel Implementation using an Embedded Language: a Status Report
Obsidian is a domain specific language for general purpose computations on graphics processing units (GPUs) embedded Haskell. This report present examples of GPU kernels written in Obsidian as well as parts of the current implementation of Obsidian. The goal with Obsidian is to raise the level of abstraction for the programmer while not scarifying performance. The kind of decisions and tradeoff...
متن کاملGPU Programming in Functional Languages
Graphical Processing Units (GPUs) are known to be excellent computation accelerators. However, their approach to data processing is very different from regular CPUs. This makes it harder for a regular developer to program these devices. In the past few years, several frameworks were introduced to simplify the programming of GPU devices. Accelerate and Obsidian are two of these frameworks, writt...
متن کاملA language for hierarchical data parallel design-space exploration on GPUs
Graphics Processing Units (GPUs) offer potential for very high performance; they are also rapidly evolving. Obsidian is an embedded language (in Haskell) for implementing high performance kernels to be run on GPUs. We would like to have our cake and eat it too; we want to raise the level of abstraction beyond CUDA code and still give the programmer control over the details relevant to kernel pe...
متن کامل